package com.rchat.pocmini.channel;

import com.airtalkee.sdk.OnChannelAlertListener;
import com.airtalkee.sdk.OnChannelListener;

/**
 * Created by ljd on 2017/2/8.
 * <p>
 * AirtalkeeCchannel  接口规范
 */

public interface PocAirtalkeeChannelInterface {


    /**
     * 注册OnChannelListener监听器
     *
     * @param listener 监听器
     */
    void setOnChannelListener(OnChannelListener listener);


    /**
     * 从服务器获取当前用户所属的频道列表，事件返回OnChannelListener.onChannelListGet
     *
     * @param type ex:AirtalkeeChannel.CHANNEL_TYPE_SECRET
     */
    void getChannelList(int type);


    /**
     * 从服务器获取制定频道的成员列表，
     * 事件返回OnChannelListener.onChannelMemberListGet
     *
     * @param channelId 频道ID
     */
    void getChannelMember(String channelId);


    /**
     * 从服务器获取所有频道的在线人数（仅获取一次）
     * 事件返回OnChannelListener.onChannelOnlineCount
     */
    void getChannelOnlineCount();

    /**
     * 从服务器周期性获取所有频道的在线人数（切记不需要展示频道在线时调用
     * getChannelOnlineCountStop将其结束，否则一直会消耗用户流量）,
     * 事件返回OnChannelListener.onChannelOnlineCount
     *
     * @param timeSeconds 周期间隔秒数
     */
    void getChannelOnlineCountStart(int timeSeconds);

    /**
     * 结束周期性获取所有频道的在线人数
     */
    void getChannelOnlineCountStop();

    /**
     * 注册呼入通知监听器，关心此事件的需设置此listener的实例
     *
     * @param listener 监听器
     */
    void setOnChannelAlertListener(OnChannelAlertListener listener);


    /**
     * 发起频道呼入
     * 事件返回OnChannelAlertListener.onChannelAlertSent
     *
     * @param channelId 频道ID
     */
    void channelAlert(String channelId);


    /**
     * 发起频道呼入，
     * 事件返回OnChannelAlertListener.onChannelAlertSent
     *
     * @param channelId 频道ID
     * @param isForceId 是否强制呼入成员，当强制时，接受到呼入通知的成员将直接进入此频道会话
     */
    void channelAlert(String channelId, boolean isForceId);

    /**
     * 频道呼入应答，当用户收到频道呼入通知后，可通过此接口进行应答
     *
     * @param isAccept 是否应答此呼入请求，isAccept为true，即应答后SDK
     *                 会自动接通此频道会话，为false，则自动忽略此请求
     */
    void channelAlertIncomingClose(boolean isAccept);


}
